import axios from "axios"


// 创建axios实例
const service = axios.create({
    // 在请求地址前面加上baseURL
    baseURL: "",
    // 当发送跨域请求时携带cookie
    // withCredentials: true,
    timeout: 5000,
});

// 请求拦截
service.interceptors.request.use(
    (config) => {
        // 模拟指定请求令牌
        config.headers["X-Token"] = "my token";
        // token
        config.headers['Authorization'] = "token code"
        return config;
    },
    (error) => {
        // 请求错误的统一处理
        console.log(error);  // for debug
        return Promise.reject(error);
    }
);

// 响应拦截器
service.interceptors.response.use(
    /**
    * 通过判断状态码统一处理响应，根据情况修改
    * 同时也可以通过HTTP状态码判断请求结果
    */
   (response) => {
       // 2xx 范围内的状态码都会触发该函数。
       const res = response.data;

       // 如果状态码不是20000则认为有错误
       if (res.code !== 200) {
           console.log('Error code '+ res.code);

           // 50008: 非法令牌; 50012: 其他客户端已登入; 50014: 令牌过期;
           if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
               // 重新登录 或者其他
               console.log("Error code" + res.code);
           }
           return Promise.reject(new Error(res.message || "Error"));
       }
       else {
           return res;
       }
   },
   (error) => {
       // 超出 2xx 范围的状态码都会触发该函数。
       console.log('Error' + error);
       return Promise.reject(error);
   }
);

export default service;